www.gusucode.com > VC++ 编写软件自动升级服务源代码 > VC++ 编写软件自动升级服务源代码/gusucode/updater_src0.8.1.6/ModeFullPropWelcome.cpp
/******************************************************************** created: 2004/11/07 created: 7:11:2004 12:15 filename: ModeFullPropWelcome.cpp file path: Updater file base: ModeFullPropWelcome file ext: cpp author: Geert van Horrik purpose: *********************************************************************/ //********************************************************************* // Includes //********************************************************************* #include "stdafx.h" #include "Updater.h" #include "ModeFullPropWelcome.h" #include "ModeFullSheet.h" //********************************************************************* // MESSAGE MAP //********************************************************************* BEGIN_MESSAGE_MAP(CModeFullPropWelcome, CPropertyPageEx) ON_WM_CTLCOLOR() ON_WM_ERASEBKGND() END_MESSAGE_MAP() //********************************************************************* // CONSTRUCTOR & DESTRUCTOR //********************************************************************* IMPLEMENT_DYNAMIC(CModeFullPropWelcome, CPropertyPageEx) //===================================================================== CModeFullPropWelcome::CModeFullPropWelcome() : CPropertyPageEx(CModeFullPropWelcome::IDD) { // Init singleton classes m_pFunctions = CFunctions::Instance(); m_pSettings = CSettings::Instance(); m_pUpdateInfo = CUpdateInfo::Instance(); m_pLanguage = CLanguage::Instance(); // Create hollow brush m_oHollowBrush.CreateStockObject(HOLLOW_BRUSH); // Hide header because this is the first page m_psp.dwFlags |= PSP_DEFAULT | PSP_USETITLE | PSP_HIDEHEADER; // Load watermark HBITMAP hBmpWatermark = (HBITMAP) ::LoadImage(NULL, m_pSettings->GetLogoLarge(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // Get size BITMAPINFOHEADER bmpWatermark; ::GetObject(hBmpWatermark, sizeof(BITMAPINFOHEADER), &bmpWatermark); if ((bmpWatermark.biHeight == LOGO_LARGE_HEIGHT) && (bmpWatermark.biWidth == LOGO_LARGE_WIDTH)) { // Use current loaded logo m_bmpWatermark.Attach(hBmpWatermark); } else { // Load default logo m_bmpWatermark.LoadBitmap(IDB_LOGO_LARGE); } } //===================================================================== CModeFullPropWelcome::~CModeFullPropWelcome() { // Delete brushes m_oHollowBrush.DeleteObject(); } //********************************************************************* // PUBLIC FUNCTIONS //********************************************************************* //********************************************************************* // PRIVATE FUNCTIONS //********************************************************************* void CModeFullPropWelcome::DoDataExchange(CDataExchange* pDX) { CPropertyPageEx::DoDataExchange(pDX); DDX_Control(pDX, lblTitle, m_lblTitle); DDX_Control(pDX, lblExplanation, m_lblExplanation); } //===================================================================== BOOL CModeFullPropWelcome::OnInitDialog() { // Call original function CPropertyPageEx::OnInitDialog(); // Set title m_lblTitle.SetWindowText(m_pLanguage->GetString(IDS_FULL_WELCOME_TITLE)); // Set font for title m_fntTitle.DeleteObject(); m_fntTitle.CreateFont( 19, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision PROOF_QUALITY, // nQuality DEFAULT_PITCH | FF_DONTCARE, // nPitchAndFamily _T("Verdana Bold")); m_lblTitle.SetFont(&m_fntTitle); // Return TRUE unless you want to set focus to a control return TRUE; } //===================================================================== BOOL CModeFullPropWelcome::OnSetActive() { // Call original function CPropertyPageEx::OnSetActive(); // Load language strings CString sTemp; sTemp.Format(m_pLanguage->GetString(IDS_FULL_WELCOME_EXPLANATION), m_pSettings->GetAppName()); m_lblExplanation.SetWindowText(sTemp); // Return value return TRUE; } //===================================================================== LRESULT CModeFullPropWelcome::OnWizardNext() { // Get parent CModeFullSheet * pParent = (CModeFullSheet *)GetParent(); // Start next task pParent->PressButton(PSBTN_NEXT); // Don't change page yourself return -1; } //===================================================================== HBRUSH CModeFullPropWelcome::OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor) { switch (nCtlColor) { case CTLCOLOR_STATIC: // The Slider Control has CTLCOLOR_STATIC, but doesn't let // the background shine through, TCHAR lpszClassName[255]; GetClassName(pWnd->m_hWnd, lpszClassName, 255); if(_tcscmp(lpszClassName, TRACKBAR_CLASS) == 0) { return CPropertyPageEx::OnCtlColor(pDC, pWnd, nCtlColor); } // Let static controls shine through pDC->SetBkMode(TRANSPARENT); return HBRUSH(m_oHollowBrush); default: break; } // If we reach this line, we haven't set a brush so far return CPropertyPageEx::OnCtlColor(pDC, pWnd, nCtlColor); } //===================================================================== BOOL CModeFullPropWelcome::OnEraseBkgnd(CDC * pDC) { // Declare variables CRect rectBitmap; COLORREF clrWhite = 0x00FFFFFF; // Get client rect GetClientRect(rectBitmap); // Background color should be white pDC->FillSolidRect(rectBitmap, clrWhite); // Get paint field CDC dcMem; dcMem.CreateCompatibleDC(pDC); CBitmap * pOldBitmap = dcMem.SelectObject(&m_bmpWatermark); // Draw bitmap pDC->BitBlt(0, 0, LOGO_LARGE_WIDTH, LOGO_LARGE_HEIGHT, &dcMem, 0, 0, SRCCOPY); // Select original object dcMem.SelectObject(pOldBitmap); dcMem.DeleteDC(); return TRUE; }